package devrule

import "yundian/internel/pkg/dingo"

// DeviceRules 设备套餐-可根据不同网点定制
type DeviceRulesModel struct {
	Id          int    `gorm:"column:id" json:"id"`
	TypeId      int    `gorm:"column:type_id" json:"typeId"`
	UseDuration int    `gorm:"column:use_duration" json:"useDuration"`
	PayMoney    int64  `gorm:"column:pay_money" json:"payMoney"`
	SetMealNum  int8   `gorm:"column:set_meal_num" json:"setMealNum"`
	Status      int8   `gorm:"column:status" json:"status"`
	RuleName    string `gorm:"column:rule_name" json:"ruleName"`
	IsRecommend int8   `gorm:"column:is_recommend" json:"isRecommend"`
	Priority    int8   `gorm:"column:priority" json:"priority"`

	Deposit          int64 `gorm:"column:deposit" json:"deposit"`                     // 押金 - 分
	BaseTimes        int8  `gorm:"column:base_times" json:"baseTimes"`                // 最少使用时长-分钟
	BasePrice        int64 `gorm:"column:base_price" json:"basePrice"`                // 最低使用费用-分
	PayInterval      int8  `gorm:"column:pay_interval" json:"payInterval"`            // 每使用-分钟
	PayIntervalPrice int64 `gorm:"column:pay_interval_price" json:"payIntervalPrice"` // 每使用多少分钟需要消费多少金额-分
	FreeTimes        int8  `gorm:"column:free_times" json:"freeTimes"`                // 免费时长-分钟
	MaxTime          int   `gorm:"column:max_time" json:"maxTime"`                    // 最大使用时长-分钟
	MaxPayPrice      int64 `gorm:"column:max_pay_price" json:"maxPayPrice"`           // 日最大消费-分
	PayTactics       int64 `gorm:"column:pay_tactics" json:"payTactics"`              // 消费计算策略 1自然日 2 24小时

	Name string `gorm:"column:name" json:"name"` //计费规则名称

	CreateAt dingo.Time `gorm:"column:create_at" json:"create_at"`
	UpdateAt dingo.Time `gorm:"column:update_at" json:"update_at"`
}

func New() *DeviceRulesModel {
	return &DeviceRulesModel{}
}

func (model *DeviceRulesModel) Mutate(attrs ...DeviceRuleAttr) *DeviceRulesModel {
	DeviceRuleAttrs(attrs).Apply(model)
	return model
}

func (model *DeviceRulesModel) GetTableName() string {
	return "device_rules"
}
